package com.taotao.job.core.model;

import com.alibaba.fastjson.JSON;
import lombok.Builder;
import lombok.Getter;

import java.util.Date;

/**
 * 任务实例
 *
 * @author fanbeibei
 * @date 2021/2/24 20:41
 */
@Builder
@Getter
public class JobInstanceInfo {
    /**
     * 任务实例id
     */
    private Long id;
    /**
     * 执行器编码
     */
    private String executorCode;
    /**
     * 任务ID
     */
    private Long jobId;
    /**
     * 任务类型:1-普通任务;2-工作流任务
     */
    private Integer jobType;
    /**
     * 执行器任务handler
     */
    private String executorHandler;
    /**
     * 根据cron表达计算出的触发时间
     */
    private Date cronTriggerTime;
    /**
     * 分片主任务id
     */
    private Long shardingMainId;
    /**
     * 分片数,1表示不分片
     */
    private Integer shardingCount;
    /**
     * 分片的索引,从0开始,-1表示主任务
     */
    private Integer shardingIndex;
    /**
     * 实际触发时间
     */
    private Date triggerTime;
    /**
     * 触发状态:0-触发中,1-触发成功,2-触发失败,3-错过触发
     */
    private Integer triggerStatus;
    /**
     * 触发日志
     */
    private String triggerMsg;
    /**
     * 运行状态:-1还未触发成功,0-等待运行,100-运行中,200-运行成功,404-实例丢失,500-运行失败,504-运行超时,904-杀死中,999-被杀死
     */
    private Integer runStatus;
    /**
     * 运行时间
     */
    private Date runTime;
    /**
     * 运行日志
     */
    private String runMsg;
    /**
     * 执行器回调参数
     */
    private String callBackParam;
    /**
     * 执行器回调时间
     */
    private Date callBackTime;
    /**
     * 启动类型（1:自动启动，2:依赖启动，3:手动启动自己,4-手动启动自己及下级依赖）
     */
    private Integer startType;
    /**
     * 任务历史版本ID
     */
    private Long historyId;
    /**
     * 重跑的任务id
     */
    private Long rerunId;


    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
